////////////////////////////////////////////////
// File: AdvertisementController.java
// Description: Enter summary here after generation.
// Date: 2016-09-19 15:32:14
// Web: http://www.elanzhou.com/
////////////////////////////////////////////////
package com.mvc.controller;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.util.List;
import java.util.Random;
import java.text.SimpleDateFormat;
import java.util.Date;

import javax.imageio.ImageIO;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;


//import com.mvc.entity.User;
//import com.mvc.entity.UserDetail;
import com.mvc.entity.Advertisement;
import com.mvc.service.AdvertisementService;
import com.pub.MyJson;
import com.pub.Page;
import com.aspose.cells.Cells;
import com.aspose.cells.Workbook;
import com.aspose.cells.Worksheet;
@Controller
@RequestMapping("/Verfy")
public class VerfyController {
	protected final transient Log logger = LogFactory.getLog(VerfyController.class);
	@Autowired
	private AdvertisementService advertisementService;
	  // 验证码图片的宽度。         
    private int width = 90;         
    // 验证码图片的高度。         
    private int height = 30;         
    // 验证码字符个数         
    private int codeCount = 4;         
    private int x =-10;         
    // 字体高度         
    private int fontHeight;         
    private int codeY;         
    char[] codeSequence = { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J',         
            'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W',         
            'X', 'Y', 'Z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' };        
	public VerfyController() {
	}
	   public void initxuan()  {         
	        // 从web.xml中获取初始信息         
	        // 宽度         
	        String strWidth ="90";         
	        // 高度         
	        String strHeight ="30";         
	        // 字符个数         
	        String strCodeCount = "4";         
	        // 将配置的信息转换成数值         
	        try {         
	            if (strWidth != null && strWidth.length() != 0) {         
	                width = Integer.parseInt(strWidth);         
	            }         
	            if (strHeight != null && strHeight.length() != 0) {         
	                height = Integer.parseInt(strHeight);         
	            }         
	            if (strCodeCount != null && strCodeCount.length() != 0) {         
	                codeCount = Integer.parseInt(strCodeCount);         
	            }         
	        } catch (NumberFormatException e) {         
	        }         
	        x = (width-20) / (codeCount + 1);         
	        fontHeight = height - 2;         
	        codeY = height - 4;         
	    }   
	/*列表*/
	@RequestMapping("getCode.Action")
	public void getCode(HttpSession session,HttpServletRequest reqest, HttpServletResponse response) throws IOException {		
		  initxuan();
	        // 定义图像buffer         
	        BufferedImage buffImg = new BufferedImage(width, height,         
	                BufferedImage.TYPE_INT_RGB);         
	        Graphics2D g = buffImg.createGraphics();         
	        // 创建一个随机数生成器类         
	        Random random = new Random();         
	        // 将图像填充为白色         
	        g.setColor(Color.WHITE);         
	        g.fillRect(0, 0, width, height);         
	        // 创建字体，字体的大小应该根据图片的高度来定。         
	        Font font = new Font("Fixedsys", Font.PLAIN, fontHeight);         
	        // 设置字体。         
	        g.setFont(font);         
	        // 画边框。         
	        g.setColor(Color.WHITE);         
	        g.drawRect(0, 0, width - 1, height - 1);         
	        // 随机产生160条干扰线，使图象中的认证码不易被其它程序探测到。         
	        g.setColor(Color.BLACK);         
	        for (int i = 0; i < 10; i++) {         
	            int x = random.nextInt(width);         
	            int y = random.nextInt(height);         
	            int xl = random.nextInt(12);         
	            int yl = random.nextInt(12);         
	            g.drawLine(x, y, x + xl, y + yl);         
	        }         
	        // randomCode用于保存随机产生的验证码，以便用户登录后进行验证。         
	        StringBuffer randomCode = new StringBuffer();         
	        int red = 0, green = 0, blue = 0;         
	        // 随机产生codeCount数字的验证码。         
	        for (int i = 0; i < codeCount; i++) {         
	            // 得到随机产生的验证码数字。         
	            String strRand = String.valueOf(codeSequence[random.nextInt(36)]);         
	            // 产生随机的颜色分量来构造颜色值，这样输出的每位数字的颜色值都将不同。         
	            red = random.nextInt(255);         
	            green = random.nextInt(255);         
	            blue = random.nextInt(255);         
	            // 用随机产生的颜色将验证码绘制到图像中。         
	            g.setColor(new Color(red, green, blue));         
	            g.drawString(strRand, (i + 1) * x, codeY);         
	            // 将产生的四个随机数组合在一起。         
	            randomCode.append(strRand);         
	        }         
	        // 将四位数字的验证码保存到Session中。         
 
	        session.setAttribute("validateCode", randomCode.toString());         
	        // 禁止图像缓存。         
	        response.setHeader("Pragma", "no-cache");         
	        response.setHeader("Cache-Control", "no-cache");         
	        response.setDateHeader("Expires", 0);         
	        response.setContentType("image/jpeg");         
	        // 将图像输出到Servlet输出流中。         
	        ServletOutputStream sos = response.getOutputStream();         
	        ImageIO.write(buffImg, "jpeg", sos);         
	        sos.close();        

	}
	
    
 
}
